# -*- coding:utf-8 -*-

# @Time    : 2023/5/13 02:24
# @Author  : zengwenjia
# @Email   : zengwenjia@lingxi.ai
# @File    : user_info_extract.py
# @Software: LLM_internal

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
from bot.insurance_consultant_dx.agent.llm_agent import LLMAgent

sale_sop = """
节点 | 节点目标
--- | ---
打开微信|告知用户之前给他的权益现在帮他升级了成了百万医疗短险需要他现在购买，带她去微信上查看购买百万医疗短险，指导用户打开微信
找到微信添加公众号位置 | 用户打开微信后,第二步,要引导用户找到微信中如何添加公众号,用户拒绝需要劝服
看到公众号 | 用户找到如何添加公众号后,第三步,要引导用户在微信中搜索【如果有保】并看到【如果有保】公众号，用户说“好的”、“嗯”代表用户已经看到了公众号，用户拒绝需要劝服
看到公众号中按键| 用户看到公众号后,第四步,指导用户看到【如果有保】公众号中的指定按键,用户拒绝需要劝服
输入激活码 | 用户看到指定按键后,第五步,告知用户激活码,指导用户输入激活码后会自动进入百万医疗短险页面,用户拒绝需要劝服
领取赠险、看到短险页面 | 询问用户是否看到【泰康600万】字样的页面，如果用户否定需要再次确认。
确认费用 | 需要与用户确认费用是不是几块钱，用户表示看不见/没找到需要再次确认费用
协助投保 |需要指导用户按照页面提示操作支付，用户表示看不懂/没反应/你再说怎么操作等情况，需要多次协助用户操作。
确认投保完成/支付成功 |询问用户是否完成支付，用户如果没有明确表示自己已经完成了支付（支付了/弄好了/弄完了/完事了等都代表用户完成了支付），需要再次确认用户是否已经完成了支付。
升级至600万保额 | 指导用户点击【升级至600万保障】按键，用户没有明确表示已经点击已经点击按键，需要再次指导，直到用户点击按键。
加保拖单 | 确认用户是否需要为自己的家人购买百万医疗保险，并协助用户完成投保，不管用户加保拖单是否成功,都要进行成交确认环节
再次加保拖单 | 再次确认用户是否需要为自己的家人购买百万医疗保险，并协助用户完成投保，不管用户加保拖单是否成功,都要进行成交确认环节
挂机| 完成销售流程，用户未成年，用户表示自己以及家人都买了百万医疗短险
"""

default_template = """
作为一个专业的保险销售员，业务场景是通过电话销售百万医疗保险，你需要根据对话记录选择销售流程下一步的销售流程节点。

销售流程如下表格：
{sale_sop}

对话记录如下：
```
{conversation_history}
```
请注意:
1.销售流程节点按照表格从上到下执行,同时也要注意节点目标是否完成,在不引起用户反感的情况下,要节点目标达成后再进行下一个节点
2.根据保险销售员其他的话术一步一步确认销售流程的节点,但是需要忽略掉用户提出的问题,同时也忽略掉保险销售员对用户问题的解答
3.你的目的是完成销售,忽略用户的负向反馈,继续走销售流程
保险销售员的下一句的销售流程节点(仅选择销售流程表格中的一个节点)是:
"""
# 3.不要跳过任何节点,除非你已经确定用户已经非常有投保意向,可以跳过部分节点直接促成或协助用户投保
class SalesSop(LLMAgent):

    def __init__(self, role, conversation_history):
        conversation_history = conversation_history.replace("保险规划师", "保险销售员")
        self.prompt = default_template.format(role=role,
                                              conversation_history=conversation_history, sale_sop=sale_sop)
        super().__init__(self.prompt)
